<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Java Service Wrapper - What is the Java Service Wrapper?</title>
<style media="all" type="text/css">
            @import url("./style/wrapper.css");
        </style>
</head>
<body bgcolor="#eeeeff" marginheight="0" marginwidth="0" leftmargin="0" topmargin="0" alink="#023264" vlink="#023264" link="#525D76" text="#000000">
<map name="wrapperLogo">
<area href="http://wrapper.tanukisoftware.org" coords="90,90,88" shape="circle">
</map>
<map name="wrapperTitle">
<area href="http://www.tanukisoftware.com" coords="28,32,176,48" shape="rect">
</map>
<table cellpadding="0" cellspacing="0" width="100%" border="0">
<tr>
<td valign="top" width="180">
<table cellpadding="0" cellspacing="0" width="100%" border="0">
<tr>
<td width="180"><img usemap="#wrapperLogo" border="0" height="180" width="180" src="images/WrapperLogo.png"></td>
</tr>
<tr>
<td>
<table cellpadding="4" cellspacing="0" width="100%" border="0">
<tr>
<td nowrap="true">
<div id="menu">
<script language="JavaScript">//@@MENU_TOP@@</script>
<div>
<b>Essentials</b>
<div>
<a href="introduction.html">Introduction</a>
</div>
<div>
<a href="integrate.html">Integration Methods</a>
</div>
<div>
<a href="properties.html">Configuration Properties</a>
</div>
<div>
<a href="launch.html">Launching Your Application</a>
</div>
<div>
<b>
                        &gt;&gt;
                        <a href="donate.html">Show Your Support</a>
                        &lt;&lt;
                    </b>
</div>
<div>
<a href="sponsors.html">Sponsors</a>
</div>
</div>
<div>
<b>Documentation</b>
<div>
<a href="jmx.html">JMX Control</a>
</div>
<div>
<a href="security-model.html">Security Model</a>
</div>
<div>
<a href="example.html">Feature Examples</a>
</div>
<div>
<a href="debugging.html">Debugging Your Application</a>
</div>
<div>
<a href="troubleshooting.html">Troubleshooting</a>
</div>
<div>
<a href="faq.html">FAQ</a>
</div>
<div>
<a href="release-notes.html">Release Notes</a>
</div>
<div>
<a href="history.html">Project History</a>
</div>
<div>
<a href="javadocs.html">Javadocs API</a>
</div>
<div>
<a href="buttons.html">Buttons</a>
</div>
<div>
<a href="authors.html">Authors</a>
</div>
<div>
<a href="license.html">License</a>
</div>
</div>
<div>
<b>Download</b>
<div>
<a href="http://sourceforge.net/project/showfiles.php?group_id=39428&package_id=31591">Binaries</a>
</div>
<div>
<a href="http://sourceforge.net/project/showfiles.php?group_id=39428&package_id=33658">Source Code</a>
</div>
</div>
<div>
<b>Get Involved</b>
<div>
<a href="http://sourceforge.net/projects/wrapper/">Source Forge</a>
</div>
<div>
<a href="http://svn.sourceforge.net/viewvc/wrapper/">Subversion Repository</a>
</div>
<div>
<a href="http://sourceforge.net/tracker/?group_id=39428">Issue Tracking</a>
</div>
<div>
<a href="http://sourceforge.net/mail/?group_id=39428">Mailing Lists and Archives</a>
</div>
<div>
<a href="http://sourceforge.net/forum/?group_id=39428">Forums (Old)</a>
</div>
</div>
</div>
<script language="JavaScript">//@@MENU_BOTTOM@@</script>
<p>
<b>Hosted by:</b>
<br>
<a href="http://sourceforge.net/projects/wrapper/"><img alt="SourceForge" border="0" height="31" width="88" src="http://sourceforge.net/sflogo.php?group_id=39428"></a>
<br>
</p>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td><td valign="top" width="*">
<table cellpadding="0" cellspacing="0" width="100%" border="0">
<tr>
<td colspan="3"><img height="4" src="images/spacer.gif"></td>
</tr>
<tr>
<td align="center" height="90" colspan="2"><a href="http://wrapper.tanukisoftware.org"><img border="0" height="90" width="728" src="images/OfflineAd728x90.png"></a></td><td rowspan="5"><img width="4" src="images/spacer.gif"></td>
</tr>
<tr>
<td height="49" width="435"><img usemap="#wrapperTitle" border="0" height="49" width="435" src="images/WrapperTitle.png"></td><td valign="bottom" align="right" width="*"><a href="donate.html"><img border="0" height="16" width="300" src="images/DonationRequest.png"></a></td>
</tr>
<tr>
<td height="4" colspan="2"><img height="4" width="500" src="images/BorderTop.png"></td>
</tr>
<tr>
<td colspan="2">
<table cellspacing="0" cellpadding="0" width="100%" border="0">
<tr>
<td valign="top" width="4"><img height="496" width="4" src="images/BorderLeft.png"></td><td bgcolor="#ffffff" valign="top" width="*" colspan="2">
<table cellpadding="4" cellspacing="0" width="100%" border="0">
<tr>
<td nowrap="true" align="center"><font zcolor="#115b77" color="#8888aa" size="5"><b>What is the Java Service Wrapper?</b></font></td>
</tr>
<tr>
<td>
<title>What is the Java Service Wrapper?</title>
 
     

    
<a name="N10009"></a>
<table cellpadding="2" cellspacing="0" width="100%" border="0">
<tr>
<td bgcolor="#8888aa" class="sectionheader1" width="*"><font color="#eeeeee" size="4"><b>Note from the Wrapper team.</b></font></td>
</tr>
<tr>
<td><img height="4" width="1" src="./images/spacer.gif"></td>
</tr>
<tr>
<td>
        
        
<div class="note">
<table cellspacing="0" cellpadding="2" width="100%" border="0">
<tr>
<td nowrap="nowrap" valign="top">
<p class="notelabel">
<font color="#0000a0"><b>NOTE MEG</b></font>
</p>
</td><td><img width="10" src="images/spacer.gif"></td><td bgcolor="#bbbbdd" class="notebody"><font color="#222260">
            
<p>
                The Java Service Wrapper continues to be actively developed.  Each new
                version is the culmination of a great deal of time and energy in development,
                testing, documentation and user support.
            </p>
            
<p>
                While the Wrapper is being used within a number of open sourced projects,
                by far the majority of our user base is directly or indirectly making use of
                the Wrapper to support commercial applications and or commercial
                infrastructure.
            </p>
            
<p>
                We urge all of our users to please review the value that the Wrapper is
                providing to your organization.  The Wrapper team develops and maintains
                the Wrapper on a volunteer basis, but the time and effort involved is real.
            </p>
            
<p>
                Please help us to keep the Wrapper project alive, free, and growing, by
                showing your appreciation and support for the project with a
                <a href="donate.html">donation</a> to the team.
            </p>
            
<p>
                We would also like to thank all of our users for the ongoing feedback which
                has helped us to continuously improve the Wrapper over time.
            </p>
            
<p>
                Sincerely,
            </p>
            
<p>
                The Java Service Wrapper team.
            </p>
        
</font></td>
</tr>
</table>
</div>
    
</td>
</tr>
</table>
    
<a name="N1002B"></a>
<table cellpadding="2" cellspacing="0" width="100%" border="0">
<tr>
<td bgcolor="#8888aa" class="sectionheader1" width="*"><font color="#eeeeee" size="4"><b>Quick Start</b></font></td>
</tr>
<tr>
<td><img height="4" width="1" src="./images/spacer.gif"></td>
</tr>
<tr>
<td>
        
        
<p>
            As with any application, reading through the documentation the best
            way to get started.  But realizing the desire to get your feet wet
            quickly, you should glance over this page to get a feel for what the
            Wrapper can do.
        </p>
        
<p>
            Then to get up and running , at a minimum you will need to read over
            the <a href="integrate.html">Integration Page</a>.
            There you will be presented with 3 integration methods.  From the
            overviews, choose the one that best meets your needs and then proceed
            to read over the page dedicated to that integration method.
        </p>
        
<p>
            The Wrapper provides a very large feature set.  At some point
            it is suggested that you look over the
            <a href="properties.html">full properties list</a> to get a
            feel for the full power of the Java Service Wrapper.
        </p>
        
<p>
            If you run into problems or have any questions, the preferred method
            for getting help is posting a message to the
            <a href="http://sourceforge.net/mail/?group_id=39428">wrapper-user mailing list</a>.
        </p>
    
</td>
</tr>
</table>
    
<a name="N10049"></a>
<table cellpadding="2" cellspacing="0" width="100%" border="0">
<tr>
<td bgcolor="#8888aa" class="sectionheader1" width="*"><font color="#eeeeee" size="4"><b>Introduction</b></font></td>
</tr>
<tr>
<td><img height="4" width="1" src="./images/spacer.gif"></td>
</tr>
<tr>
<td>
        
        
<p>
            The Java Service Wrapper is an application which has evolved out of a
            desire to solve a number of problems common to many Java applications:
        </p>
        
<ul>
            
<li>
                
<a href="#service">Run as a Windows Service or Unix Daemon</a>
            
</li>
            
<li>
                
<a href="#reliability">Application Reliability</a>
            
</li>
            
<li>
                
<a href="#scripting">Standard, Out of the Box Scripting</a>
            
</li>
            
<li>
                
<a href="#restarts">On Demand Restarts</a>
            
</li>
            
<li>
                
<a href="#flexible">Flexible Configuration</a>
            
</li>
            
<li>
                
<a href="#install">Ease Application Installations</a>
            
</li>
            
<li>
                
<a href="#logging">Logging</a>
            
</li>
        
</ul>
        
<a name="service"></a>
<table cellpadding="2" cellspacing="0" width="100%" border="0">
<tr>
<td rowspan="3" width="10"><img height="1" width="10" src="./images/spacer.gif"></td><td bgcolor="#9999bb" class="sectionheader2" width="*"><font color="#eeeeee" size="3"><b>Run as a Windows Service or UNIX Daemon</b></font></td>
</tr>
<tr>
<td><img height="4" width="1" src="./images/spacer.gif"></td>
</tr>
<tr>
<td>
            
            
<p>
                The Wrapper makes it possible to install a Java Application as a
                Windows NT Service.  The scripts provided with the Wrapper also
                make it very easy to install those same Java Applications as
                daemon processes on UNIX systems.
            </p>
            
<p>
                The Wrapper correctly handles user log outs under Windows, service
                dependencies, and the ability to run services which interact with
                the desktop.
            </p>
        
</td>
</tr>
</table>
        
<a name="reliability"></a>
<table cellpadding="2" cellspacing="0" width="100%" border="0">
<tr>
<td rowspan="3" width="10"><img height="1" width="10" src="./images/spacer.gif"></td><td bgcolor="#9999bb" class="sectionheader2" width="*"><font color="#eeeeee" size="3"><b>Application Reliability</b></font></td>
</tr>
<tr>
<td><img height="4" width="1" src="./images/spacer.gif"></td>
</tr>
<tr>
<td>
            
            
<p>
                Application Reliability.  As the use of Java expands, applications have
                been written to provide a variety of mission critical services.  These
                services must be able to provide a high level of reliability.  In an
                ideal world, only software which is 100% bug free will ever be released
                and installed.  However, history has shown this not to be the case.
                Almost every application suffers from quality issues at one point or
                another during their life-cycle.  Applications hang, crash, run out of
                memory or suffer from any number of problems.  Where possible, problems
                are fixed quickly without significant service outages.  There are times,
                however, when fixing a problem can be prohibitively expensive or
                impossible to solve in a short time period.
            </p>
            
<p>
                The Wrapper monitors a JVM process and automatically restarts it if it
                that the JVM has crashed or hung.  This process takes just a few seconds
                once the Wrapper has decided there is a problem.  There is also a way to
                <a href="prop-filter-x-n.html">configure</a> the Wrapper to
                monitor the console output of a JVM and react to certain strings by
                restarting or shutting down the JVM.
            </p>
            
<p>
                While these features will not make every problem go away, they will help
                you to sleep easier knowing that if there is a problem, the Wrapper will
                be there to keep things up and running until you can get into the office
                to check the logs.  Say goodbye to that pager!! (Or as so as not to date
                myself, that cel phone!)
            </p>
        
</td>
</tr>
</table>
        
<a name="scripting"></a>
<table cellpadding="2" cellspacing="0" width="100%" border="0">
<tr>
<td rowspan="3" width="10"><img height="1" width="10" src="./images/spacer.gif"></td><td bgcolor="#9999bb" class="sectionheader2" width="*"><font color="#eeeeee" size="3"><b>Standard, Out of the Box Scripting</b></font></td>
</tr>
<tr>
<td><img height="4" width="1" src="./images/spacer.gif"></td>
</tr>
<tr>
<td>
            
            
<p>
                Write once run everywhere configuration.  Java has been marketed as a
                "Write Once, Run Everywhere" programming language.  While this is true
                for many aspects of an application, the developer is often plagued with
                having to write complicated, platform specific scripts which are tasked
                with building up class paths and collecting other system information
                necessary to launch an application.
            </p>
            
<p>
                The Java Service Wrapper helps to relieve the developer of this task
                by providing a set of scripts for a wide range of platforms that can be
                used as is to launch almost any Java Application controlled by the
                Wrapper.
            </p>
            
<p>
                The Wrapper moves all JVM configuration into a platform independent
                configuration file.  See the
                <a href="integrate.html">integration</a> examples for details.
            </p>
        
</td>
</tr>
</table>
        
<a name="restarts"></a>
<table cellpadding="2" cellspacing="0" width="100%" border="0">
<tr>
<td rowspan="3" width="10"><img height="1" width="10" src="./images/spacer.gif"></td><td bgcolor="#9999bb" class="sectionheader2" width="*"><font color="#eeeeee" size="3"><b>On Demand Restarts</b></font></td>
</tr>
<tr>
<td><img height="4" width="1" src="./images/spacer.gif"></td>
</tr>
<tr>
<td>
            
            
<p>
                The Wrapper provides a way for a Java Application to request that
                its own JVM be restarted.  This can be useful in a number of cases.
                Applications may wish to restart after having had their configuration
                files modified. Or the application may simply need to be restarted
                to avoid problems with a memory or resource leak of some kind.
            </p>
            
<p>
                JVM restarts can be triggered from within the JVM by making a call to
                <tt>WrapperManager.restart()</tt>.  See the
                <a href="javadocs.html">Javadocs</a> for more details.
            </p>
            
<p>
                There are also more passive ways to trigger restarts.  The Wrapper has
                the ability to <a href="prop-filter-x-n.html">monitor console output</a>
                and trigger shutdowns or restarts whenever certain text is detected.
            </p>
            
<p>
                The Wrapper can also be configured to either restart another JVM
                instance or shudown normally depending on the
                <a href="prop-on-exit-n.html">exit code</a> returned by a JVM.
            </p>
        
</td>
</tr>
</table>
        
<a name="flexible"></a>
<table cellpadding="2" cellspacing="0" width="100%" border="0">
<tr>
<td rowspan="3" width="10"><img height="1" width="10" src="./images/spacer.gif"></td><td bgcolor="#9999bb" class="sectionheader2" width="*"><font color="#eeeeee" size="3"><b>Flexible Configuration</b></font></td>
</tr>
<tr>
<td><img height="4" width="1" src="./images/spacer.gif"></td>
</tr>
<tr>
<td>
            
            
<p>
                The Wrapper provides a wide range of configuration properties which can
                be used to configure the JVM in any way possible from the command line.
                The Wrapper configuration file also provides a number of properties to
                allow you configure things like logging and how the Wrapper is installed
                as a service.
            </p>
            
<p>
                See the <a href="properties.html">Configuration Properties</a>
                section for details on what is possible.  Be sure you have read over
                the <a href="integrate.html">integration</a> section before
                jumping into the configuration file.
            </p>
        
</td>
</tr>
</table>
        
<a name="install"></a>
<table cellpadding="2" cellspacing="0" width="100%" border="0">
<tr>
<td rowspan="3" width="10"><img height="1" width="10" src="./images/spacer.gif"></td><td bgcolor="#9999bb" class="sectionheader2" width="*"><font color="#eeeeee" size="3"><b>Ease Application Installations</b></font></td>
</tr>
<tr>
<td><img height="4" width="1" src="./images/spacer.gif"></td>
</tr>
<tr>
<td>
            
            
<p>
                By using the Wrapper's standard scripts, and relative paths in the
                configuration file, it is usually possible to create an application
                which requires no further installation than simply expanding an
                archive file into a directory of the user's choice.
            </p>
        
</td>
</tr>
</table>
        
<a name="logging"></a>
<table cellpadding="2" cellspacing="0" width="100%" border="0">
<tr>
<td rowspan="3" width="10"><img height="1" width="10" src="./images/spacer.gif"></td><td bgcolor="#9999bb" class="sectionheader2" width="*"><font color="#eeeeee" size="3"><b>Logging</b></font></td>
</tr>
<tr>
<td><img height="4" width="1" src="./images/spacer.gif"></td>
</tr>
<tr>
<td>
            
            
<p>
                While the Wrapper does not attempt to, nor should it, replace any
                of the great logging tools available, it does provide a number of
                properties to configure how stdout and stderr output to the JVM console
                is handled.  This output can be logged to any combination of the console,
                a file, or the Event Log (Windows) or syslog (UNIX).
            </p>
            
<p>
                Logging the output to the JVM console can be critical to tracking down
                problems with an application.  Without the Wrapper, when a JVM is being
                run as a service under Windows, or as a daemon under UNIX, the console
                output would normally be lost.   The Wrapper makes sure that all console
                output is logged.
            </p>
            
<p>
                Java-based logging tools are only capable of logging output generated from
                within the JVM.  If the JVM crashes or prints out low level messages such
                as thread dumps, there is normally no way to log it.  The Wrapper logs all
                console output from the JVM process regardless of its source meaning that
                a record of any crash will survive even after the Wrapper has restarted
                the JVM.
            </p>
            
<p>
                See the <a href="props-logging.html">Logging Configuration</a>
                section for further details.
            </p>
        
</td>
</tr>
</table>
    
</td>
</tr>
</table>
    
<a name="N10114"></a>
<table cellpadding="2" cellspacing="0" width="100%" border="0">
<tr>
<td bgcolor="#8888aa" class="sectionheader1" width="*"><font color="#eeeeee" size="4"><b>Supported JVMs</b></font></td>
</tr>
<tr>
<td><img height="4" width="1" src="./images/spacer.gif"></td>
</tr>
<tr>
<td>
        
        
<p>
            The Wrapper is known to work with the Sun, IBM, Blackdown and BEA WebLogic
            JRockit JVMs without any problems.  If you get a chance to test any other
            JVMs, please be sure and let us know the results.
        </p>
        
<div class="note">
<table cellspacing="0" cellpadding="2" width="100%" border="0">
<tr>
<td nowrap="nowrap" valign="top">
<p class="notelabel">
<font color="#0000a0"><b>NOTE MEG</b></font>
</p>
</td><td><img width="10" src="images/spacer.gif"></td><td bgcolor="#bbbbdd" class="notebody"><font color="#222260">
            
<p>
                The Wrapper can be used with 1.2.x versions however some functions are disabled
                due to this version of Java's lack of support for shutdown hooks.  Shutdown
                hooks were implemented with the 1.3.0 release of Java.
            </p>
        
</font></td>
</tr>
</table>
</div>
    
</td>
</tr>
</table>
    
<a name="N10123"></a>
<table cellpadding="2" cellspacing="0" width="100%" border="0">
<tr>
<td bgcolor="#8888aa" class="sectionheader1" width="*"><font color="#eeeeee" size="4"><b>Supported Platforms</b></font></td>
</tr>
<tr>
<td><img height="4" width="1" src="./images/spacer.gif"></td>
</tr>
<tr>
<td>
        
        
<p>
            Binary distributions are provided for the following list of platforms and are
            available on the <a href="http://sourceforge.net/project/showfiles.php?group_id=39428">download page</a>.
        </p>
        
<p>
            Only OS versions which are known to work have been listed.  If you have had successful
            or unsuccessful results running on other OS versions, please post a comment below
            and it will be added to the list.
        </p>
        
<p>
            It should be fairly easy to build the Wrapper from source on additional UNIX
            platforms.  Please let us know and we will update the list.
        </p>
        
<ul>
            
<li>
                
<p>
                    
<tt>aix</tt> - AIX
                </p>
            
</li>
            
<li>
                
<p>
                    
<tt>freebsd</tt> - FreeBSD
                </p>
            
</li>
            
<li>
                
<p>
                    
<tt>hpux</tt>, <tt>hpux64</tt> -
                    HP-UX, 32 and 64-bit versions.
                </p>
            
</li>
            
<li>
                
<p>
                    
<tt>irix</tt> - SGI Irix
                </p>
            
</li>
            
<li>
                
<p>
                    
<tt>linux</tt> - Linux kernels; 2.2.x 2.4.x, 2.6.x.
                    Known to work with Debian and Red Hat, but should work with any distribution.
                    Currently supported on both 32 and 64-bit x86, and 64-bit ppc systems.
                </p>
            
</li>
            
<li>
                
<p>
                    
<tt>macosx</tt> - Macintosh OS X.
                </p>
            
</li>
            
<li>
                
<p>
                    
<tt>osf1</tt> - DEC OSF1.
                </p>
            
</li>
            
<li>
                
<p>
                    
<tt>solaris</tt> - Sun OS, Solaris 7, 8, 9 and 10.
                    Currently supported on both 32 and 64-bit sparc, and x86 systems.
                </p>
            
</li>
            
<li>
                
<p>
                    
<tt>win32</tt> - Windows NT, 2000, XP, and 2003.
                </p>
                
<p>
                    Also known to run on Windows 98 and ME, however due the lack of support for
                    services in the OS, the Wrapper can only be run in console mode.
                </p>
            
</li>
        
</ul>
    
</td>
</tr>
</table>

</td>
</tr>
<tr>
<td align="right" id="author">
<p>
<i>by Leif Mortenson</i>
</p>
</td>
</tr>
</table>
<script language="JavaScript">//@@BODY_SECTION@@</script></td><td valign="bottom" width="4"><img height="496" width="4" src="images/BorderRight.png"></td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="right" height="4" colspan="2"><img height="4" width="500" src="images/BorderBottom.png"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellpadding="2" cellspacing="0" border="0" width="100%">
<tr>
<td id="copyright" align="left"><font color="#525D76" size="-1" face="arial,helvetica,sanserif"><i>
                            Copyright &copy;1999-2004 by <a href="http://www.tanukisoftware.com">Tanuki Software</a>.
                            All Rights Reserved.
                        </i></font></td><td align="right"><font color="#525D76" size="-1" face="arial,helvetica,sanserif"><i>
                            last modified:
                            <script language="JavaScript"> document.write(document.lastModified); </script></i></font></td>
</tr>
</table>
</body>
</html>
